.TH std::stop_callback::~stop_callback 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::stop_callback::~stop_callback \- std::stop_callback::~stop_callback

.SH Synopsis
   ~stop_callback();  \fI(since C++20)\fP

   Destroys the stop_callback object.

   If *this has a stop_token with associated stop-state, deregisters the callback from
   it.

   If the callback function is being invoked concurrently on another thread, the
   destructor does not complete until the callback function invocation is complete. If
   the callback function is being invoked on the same thread the destructor is being
   invoked on, then the destructor returns without waiting for callback invocation to
   complete (see Notes).

.SH Notes

   The stop_callback destructor is designed to prevent race conditions and deadlocks.
   If another thread is currently invoking the callback, then the destructor cannot
   return until that completes, or else the function object could potentially be
   destroyed while it is being executed. The callback function is not required to be
   neither copyable nor movable - it lives in the stop_callback object itself even
   after registration.

   On the other hand, if the current thread invoking the destructor is the same thread
   that is invoking the callback, then the destructor cannot wait or else a deadlock
   would occur. It is possible and valid for the same thread to be destroying the
   stop_callback while it is invoking its callback function, because the callback
   function might itself destroy the stop_callback, directly or indirectly.
